# coding:utf-8
import pandas as pd
import csv
import re
import numpy as np

# 读取文件
dou1 = pd.read_excel(r'G:\工作\每日\抖音1.xlsx', dtype={'商品ID': str, '达人昵称': str})
dou2 = pd.read_excel(r'G:\工作\每日\抖音2.xlsx', dtype={'商品ID': str, '达人昵称': str})
dou3 = pd.read_excel(r'G:\工作\每日\抖音3.xlsx', dtype={'商品ID': str, '达人昵称': str})
dou4 = pd.read_excel(r'G:\工作\每日\抖音4.xlsx', dtype={'商品ID': str, '达人昵称': str})

# 提取对应列
dou1_date = dou1.loc[
    :, ['商品ID', '商家编码', '商品数量', '订单应付金额', '订单状态', '订单提交时间', '支付完成时间', '售后状态',
        '流量来源', '达人昵称', '流量类型', '流量渠道', '流量体裁', '平台实际承担优惠金额', '达人实际承担优惠金额']]
dou1_date['平台'] = '抖音1'

dou2_date = dou2.loc[
    :, ['商品ID', '商家编码', '商品数量', '订单应付金额', '订单状态', '订单提交时间', '支付完成时间', '售后状态',
        '流量来源', '达人昵称', '流量类型', '流量渠道', '流量体裁', '平台实际承担优惠金额', '达人实际承担优惠金额']]
dou2_date['平台'] = '抖音2'

dou3_date = dou3.loc[
    :, ['商品ID', '商家编码', '商品数量', '订单应付金额', '订单状态', '订单提交时间', '支付完成时间', '售后状态',
        '流量来源', '达人昵称', '流量类型', '流量渠道', '流量体裁', '平台实际承担优惠金额', '达人实际承担优惠金额']]
dou3_date['平台'] = '抖音3'

dou4_date = dou4.loc[
    :, ['商品ID', '商家编码', '商品数量', '订单应付金额', '订单状态', '订单提交时间', '支付完成时间', '售后状态',
        '流量来源', '达人昵称', '流量类型', '流量渠道', '流量体裁', '平台实际承担优惠金额', '达人实际承担优惠金额']]
dou4_date['平台'] = '抖音4'
dou = pd.concat([dou1_date, dou2_date, dou3_date, dou4_date])

dou.columns = ['商品ID', '商家编码', '商品数量', '订单应付金额', '订单状态', '订单提交时间', '支付完成时间', '售后状态',
               '流量来源', '达人昵称', '流量类型', '流量渠道', '流量体裁', '平台实际承担优惠金额',
               '达人实际承担优惠金额', '平台']
dou['订单应付金额加优惠'] = dou['订单应付金额'] + dou['平台实际承担优惠金额'] + dou['达人实际承担优惠金额']
dou['退款金额'] = dou['订单应付金额'] + dou['平台实际承担优惠金额'] + dou['达人实际承担优惠金额']
date_concat = dou[(dou['达人昵称'] != '宛禾米线官方旗舰店') & (dou['达人昵称'] != '宛禾米线速食官方旗舰店') & (
        dou['达人昵称'] != '宛禾食品旗舰店')
                  & (dou['达人昵称'] != '宛禾食品旗舰店直播间') & (dou['达人昵称'] != '宛禾米线') & (
                          dou['达人昵称'] != '宛禾速食官方旗舰店') & (dou['达人昵称'] != '宛禾速食旗舰店')
                  & (dou['达人昵称'] != '宛禾食品') & (dou['达人昵称'] != '宛禾速食直播间') & (
                          dou['达人昵称'] != '宛禾食品旗舰店甄选号') & (dou['达人昵称'] != '宛禾牛宅')
                  & (dou['达人昵称'] != '宛禾食品旗舰店自播间') & (dou['达人昵称'] != '宛禾官方旗舰店') & (
                          dou['达人昵称'] != '宛禾速食')]

date_concat_1 = date_concat

# ['商家编码']去空格
date_concat['商家编码'] = date_concat['商家编码'].str.strip()
date_concat_1['商家编码'] = date_concat_1['商家编码'].str.strip()

# 去掉 '商家编码' 为空的
date_concat.dropna(subset=['商家编码'], inplace=True)

# 筛选发货订单，不去掉金额<=0.01,和赠品  单量，去掉退货成功的
date_concat_dl = date_concat_1[(date_concat_1['订单状态'] == '部分发货') | (date_concat_1['订单状态'] == '待发货') | (
        date_concat_1['订单状态'] == '待配货') | (date_concat_1['订单状态'] == '等待确认收货') | (
                                       date_concat_1['订单状态'] == '交易成功') | (
                                       date_concat_1['订单状态'] == '卖家已发货，等待买家确认') | (
                                       date_concat_1['订单状态'] == '已发货') | (
                                       date_concat_1['订单状态'] == '已发货，待签收') | (
                                       date_concat_1['订单状态'] == '已发货未签收') | (
                                       date_concat_1['订单状态'] == '已完成') | (
                                       date_concat_1['订单状态'] == '已支付') | (
                                       date_concat_1['订单状态'] == '已签收') | (
                                       date_concat_1['订单状态'] == '买家已付款，等待卖家发货') | (
                                       date_concat_1['订单状态'] == '等待出库')]
date_concat_dl = date_concat_dl[
    (date_concat_dl['售后状态'] != '退款成功') & (date_concat_dl['售后状态'] != '退款完成') & (
            date_concat_dl['售后状态'] != '已全额退款') & (date_concat_dl['售后状态'] != '(锁定)等待确认收货') & (
            date_concat_dl['售后状态'] != '(删除)等待出库') & (
            date_concat_dl['售后状态'] != '(删除)等待确认收货') & (date_concat_dl['售后状态'] != '售后完成')]
date_concat_dl = date_concat_dl[(date_concat_dl['订单应付金额'] >= 0.01)]
date_concat_dll = date_concat_dl
date_concat_dl = date_concat_dl.groupby(
    [date_concat_dl['平台'], date_concat_dl['达人昵称'], date_concat_dl['商家编码']], as_index=False).agg(
    商品数量=('商品数量', 'sum'))
date_concat_dll = date_concat_dll.groupby(
    [date_concat_dll['平台'], date_concat_dll['达人昵称'], date_concat_dll['商家编码']], as_index=False).agg(
    商品单量=('商品数量', 'count'))
date_concat_dll.to_excel(r'G:\结果\结果_待发货(单量)_达人.xlsx')
# 筛选发货订单，去掉金额<=0.01,和赠品  销售额,去掉退货成功的
date_concat_s = date_concat[(date_concat['订单状态'] == '部分发货') | (date_concat['订单状态'] == '待发货') | (
        date_concat['订单状态'] == '待配货') | (date_concat['订单状态'] == '等待确认收货') | (
                                    date_concat['订单状态'] == '交易成功') | (
                                    date_concat['订单状态'] == '卖家已发货，等待买家确认') | (
                                    date_concat['订单状态'] == '已发货') | (
                                    date_concat['订单状态'] == '已发货，待签收') | (
                                    date_concat['订单状态'] == '已发货未签收') | (
                                    date_concat['订单状态'] == '已完成') | (date_concat['订单状态'] == '已支付') | (
                                    date_concat['订单状态'] == '已签收') | (
                                    date_concat['订单状态'] == '买家已付款，等待卖家发货') | (
                                    date_concat['订单状态'] == '等待出库')]
date_concat_ss = date_concat_s[(date_concat_s['订单应付金额'] >= 0.01)]
date_concat_sss = date_concat_ss[(date_concat_ss['商家编码'] != '抖音直播间赠品')]
date_concat_sss = date_concat_sss[
    (date_concat_sss['售后状态'] != '退款成功') & (date_concat_sss['售后状态'] != '退款完成') & (
            date_concat_sss['售后状态'] != '已全额退款') & (date_concat_sss['售后状态'] != '(锁定)等待确认收货') & (
            date_concat_sss['售后状态'] != '(删除)等待出库') & (
            date_concat_sss['售后状态'] != '(删除)等待确认收货') & (date_concat_sss['售后状态'] != '售后完成')]
# date_concat_sss.to_excel(r'G:\结果\结果_待发货(销售额).xlsx')
# 分类汇总销售金额
result_sale = date_concat_sss.groupby([date_concat_sss['平台'], date_concat_sss['达人昵称']]).agg(
    订单应付金额=('订单应付金额加优惠', 'sum'), 商品数量=('商品数量', 'count'))

# 退款
date_concat_td = date_concat[(date_concat['售后状态'] == '退款成功') | (date_concat['售后状态'] == '退款完成') | (
        date_concat['售后状态'] == '已全额退款') | (date_concat['售后状态'] == '(锁定)等待确认收货') | (
                                     date_concat['售后状态'] == '(删除)等待出库') | (
                                     date_concat['售后状态'] == '(删除)等待确认收货') | (
                                     date_concat['售后状态'] == '售后完成')]
# 分类汇总退款金额
result_td_sale = date_concat_td['退款金额'].groupby([date_concat_td['平台'], date_concat_td['达人昵称']]).sum()

# 整合表
ress = pd.merge(result_sale, result_td_sale, on=['平台', '达人昵称'], how='left')
ress.columns = ['销售额', '销售单量', '退款金额']
ress.fillna(0, inplace=True)
ress['总销售额'] = ress['销售额'] + ress['退款金额']

ress.to_excel(r'G:\结果\线上销售额汇总_达人1.xlsx',index=False)  # 周度 需要使用 注意  需要去掉宛禾米线速食旗舰店   这个昵称

# 单量
xs = date_concat_dll

pp = pd.read_excel(r'G:\工作\商家编码匹配产品-11月.xlsx')  # 匹配表

# 所有产品，包含组合装
# 处理每行多订单情况
# 分列
s_1 = []  # 分列后以列表形式保存
r_1 = []  # 添加每个分列后的产品
r_3 = []  # 添加商品数量
r_4 = []  # 添加平台
r_5 = []  # 添加SKU
for date_s in list(xs['商家编码']):
    if '+' in date_s:
        date_split = str(date_s).split('+')
        s_1.append(date_split[0])
    elif '，' in date_s:
        date_split = str(date_s).split('，')
        if '赠' in date_split[0]:
            date_split_1 = date_split[0].split('赠')
            s_1.append(date_split_1[0])
        else:
            s_1.append(date_split[0])


    elif '赠' in date_s:

        date_split = str(date_s).split('赠')
        s_1.append(date_split[0])


    elif '＋' in date_s:
        date_split = str(date_s).split('＋')
        s_1.append(date_split[0])
    else:
        s_1.append(date_s)

xs['主产品'] = s_1

xs = xs.reset_index(drop=True)

# 处理土豆粉出单
xs = xs.loc[:, ['达人昵称', '主产品', '商品单量']]
result_hz = xs.groupby([xs['达人昵称'], xs['主产品']], as_index=False).sum()


# 判定产品类别
def f(x):
    if '+' in x:
        return '其他'

    elif '窝子面' in x:
        return '窝子面'
    elif '140g火鸡面' in x or ('火鸡面' in x):
        return '140g火鸡面'

    elif '259g火鸡粉' in x or ('火鸡粉' in x):
        return '259g火鸡粉'

    elif '436g' in x or ('螺蛳粉' in x) or ('436螺蛳' in x):
        return '螺蛳粉土豆粉版'

    elif '386g魔鬼辣螺蛳粉' in x or ('魔鬼辣' in x):
        return '魔鬼辣螺蛳粉'

    elif '粉面两掺' in x:
        return '粉面两掺'
    elif '133g袋装' in x or ('133g' in x):
        return '袋装板面'

    elif '板面桶装' in x:
        return '桶装板面'
    elif '乐享杯' in x:
        return '乐享杯桶装'
    elif '家庭版袋装米线' in x or '家庭版' in x or '家庭麻酱米线' in x or '乐享版家庭' in x:
        return '家庭版麻酱米线'
    elif '欢享土豆粉' in x or '欢享版土豆粉' in x:
        return '欢享土豆粉'
    elif '轻享版' in x:
        return '轻享土豆粉'
    elif ('乐享版刀削面' in x) or ('乐享刀削面' in x):
        return '乐享刀削面'
    elif ('乐享版土豆粉' in x) or ('乐享土豆粉' in x) or ('286g' in x):
        return '乐享土豆粉'
    elif '荆芥土豆粉' in x:
        return '荆芥土豆粉'
    elif '荆芥麻酱米线' in x or ('荆芥袋装米线' in x):
        return '荆芥米线'
    elif ('肥汁米线桶装' in x) or ('肥汁桶装' in x):
        return '肥汁桶装'
    elif ('麻辣米线' in x):
        return '麻辣米线'
    elif '117g肥汁' in x or ('肥汁米线117g' in x):
        return '117g肥汁米线'
    elif '203g肥汁' in x or ('肥汁米线203g' in x):
        return '203g肥汁米线'
    elif '线下肥汁' in x:
        return '线下肥汁米线'
    elif '80g土豆粉' in x or ('土豆粉80g' in x):
        return '其他'
    elif '板面底料1桶' in x or ('板面调料' in x):
        return '其他'
    elif x == '青春龙年礼盒':
        return '经典土豆粉'
    elif ('土豆粉') in x or ('士豆粉' in x):
        return '经典土豆粉'
    elif '豆芽板面' in x or ('166g' in x):
        return '豆芽板面'
    elif '板面' in x or ('146g' in x):
        return '桶装板面'
    elif '桶' in x:
        return '石磨桶装'
    elif ('石磨' in x) or ('经典' in x) or ('麻酱' in x) or ('传统' in x) or ('青春' in x) or ('麻辣' in x) or (
            '来点尝一尝' in x) or ('01款' in x) or ('联名' in x):
        return '袋装米线'
    elif '刀削面面饼' in x:
        return '其他'
    elif '刀削面' in x:
        return '刀削面'
    elif '烩面' in x:
        return '炝锅烩面'
    else:
        return '其他'


result_hz['分类'] = result_hz['主产品'].map(f)


# 提取件数
def m(x):
    if x == '土豆粉龙年礼盒' or x == '青春龙年礼盒':
        return 6
    elif x == '刀削面龙年礼盒':
        return 3
    elif '烩面龙年礼盒' in x:
        return 6

    elif ('乐享版' in x) or ('轻享版' in x):
        try:
            return re.findall(r"(\d+)袋", x)[-1]
        except:
            return 0
    elif '土豆粉' in x or ('士豆粉' in x) or ('粉面两掺' in x):
        try:
            return re.findall(r"(\d+)袋", x)[-1]
        except:
            return 0
    elif '桶' in x:
        try:
            return re.findall(r"(\d+)桶", x)[-1]
        except:
            return 0
    elif ('石磨' in x) or ('经典' in x) or ('麻酱' in x) or ('传统' in x) or ('青春' in x) or ('麻辣' in x) or (
            '来点尝一尝' in x) or ('联名' in x) or ('荆芥' in x) or ('袋装米线' in x) or ('肥汁' in x):

        try:
            return re.findall(r"(\d+)袋", x)[-1]
        except:
            return 0
    elif '01款' in x:
        return 1
    elif ('刀削面' in x) or ('烩面' in x) or ('板面' in x):
        try:
            return re.findall(r"(\d+)袋", x)[-1]
        except:
            return 0
    else:
        return 0


result_hz['件数'] = result_hz['主产品'].map(m)
result_hz['件数'] = result_hz['件数'].astype(int)
# result_hz['总件数']=result_hz['件数'] * result_hz['商品数量']
result_hz.to_excel(r'G:\结果\土豆粉出单达人1.xlsx',index=False)
# 周度需要用 注意  需要去掉宛禾米线速食旗舰店   这个昵称
